<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
    </body>
    <script>
        // 数组的重要方法
        // 添加--并返回数组内元素个数
        // push--尾部添加，unshift--头部添加
        let arr = [11,22,33]
        console.log(arr.push(44))
        console.log(arr)
        console.log(arr.unshift(0))
        console.log(arr)
        // 删除--函数返回删除的元素
        // 头部删除
        console.log(arr.shift())
        console.log(arr)
        // 尾部删除
        console.log(arr.pop())
        console.log(arr)
        // 任意位置添加/删除(可同时进行)splice(开始下标,删除个数,要添加的元素)
        console.log(arr.splice(0,2,55))
        console.log(arr)
        // 包含--includes
        console.log(arr.includes(55))
        console.log(arr.includes(11))
        // forEach-遍历--数组名.forEach配合箭头函数，不返回值
        let arr2 = [11,22,33,44,55]
        arr2.forEach((item,index,array) => {
            //参数需要什么就传什么，这是全部参数
            console.log(item,index,array)
        })
        // filter-过滤--数组名.filter(箭头函数)--如果满足条件则为真，返回，为假，去掉,不改变原数组
        let ret = arr2.filter((item) => item % 2 === 0)
        console.log(ret)

        // map-映射--由一个数组得到另外一个数组，两者长度相同、每个元素之间存在一一对应关系
        let arr3 = [11,22,33,44]
        let arr4 = arr3.map((item) => item*2)
        console.log(arr4)

        // every-检测数组中所有元素是否满足条件
        let ret2 = arr2.every((item) => item % 2 === 1)
        console.log(ret2)
        let ret3 = arr2.every((item) => item > 10)
        console.log(ret3)

        // reduce-汇总-求和/求数组元素值，0为prev初始值
        let sum = arr3.reduce((prev,item,index,array) => {
            return prev + item
        },0)
        console.log(sum)
    </script>
</html>